//Init module if you need
let map
let stack // 用来保存插入的字符
let index = 0 // 用来保存字符只出现一次的第一个位置
function Init()
{
    // write code here
    map = new Map() // 键值对 key是字符 value是数字 保存每个字符出现的次数
    stack = []
}
//Insert one char from stringstream
function Insert(ch)
{
    // write code here
    if(map.get(ch)){
      map.set(ch,map.get(ch)+1) // 如果有 就设置出现的次数为当前值+1
    }else{ // 如果没有 就插入到map中 设置 出现的次数是1
      map.set(ch,1) // 初次出现的次数为1
      stack.push(ch) // 把它放入字符串数组中
    }
}
//return the first appearence once char in current stringstream
function FirstAppearingOnce()
{
    // write code here
    // 遍历这个map
    var res = [] // 生成一个数组记录当前的value是1的元素
    map.forEach((value,key)=>{
      if(value === 1){
        res.push(key)
      }
    })
    if(res.length > 0){
      return res[0] // 如果数组长度是0 就返回这个数组的首元素
    }else{
      return '#' // 否则返回"#
    }
}

module.exports = {
	Init : Init,
    Insert : Insert,
    FirstAppearingOnce: FirstAppearingOnce
};